#include "head.h"
/* Usage:  */
int main(void){                                  

    // 初始化进程池
    worker_status_t workerAddr[4];
    // 进程池中的进程个数: 一倍~二倍cpu (一倍: cpu密集,  二倍: IO密集, 可以实际调整)
    initWorkerArr(workerAddr, 4);

    // 初始化网络监听
    int socketfd;
    initTcpSocket(&socketfd, "192.168.229.128", "8080");

    // 初始化epoll获得epoll文件描述符
    int epollfd = epoll_create(1);
    ERROR_CHECK(epollfd, -1, "epoll_create");
    
    // 添加连接监听
    epoll_addfd(epollfd, socketfd);
    // 子进程向父进程通信的本地socket
    for(int i=0; i<4; i++)
    {
        epoll_addfd(epollfd, workerAddr[i].socket_local_fd);
    }

    // 获取网络连接
    while(1)
    {
        // 获取就绪集合
        struct epoll_event ready_set[1024];
        //监听就绪集合
        int epoll_num = epoll_wait(epollfd, ready_set, 1024, -1);
        ERROR_CHECK(epoll_num, -1, "epoll_wait");

        // 遍历就绪集合
        for(int i=0; i<epoll_num; i++)
        {
                // socket监听读就绪， 有连接进来
               int netfd = accept(socketfd, NULL, NULL);
               // 把监听到的连接交给进程池
               toProcessPollDealNext(netfd, workerAddr, 4);
               // 主进程不需要再维护连接（已经交给子进程了）
               // 关闭连接
               close(netfd);
        }else
        {
            for(int j=0; j<4; j++)
            {
                if(workerAddr.socket_local_fd = ready_set.[i].data.fd)
                {}
            }
        }
    }


    return 0;

}


